import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入id");
        int id = scanner.nextInt();
        System.out.println("请输入名字");
        String name = scanner.next();
        //1. 创建 Datasource (数据源)
        DataSource dataSource = new MysqlDataSource();
        //((MysqlDataSource)dataSource) 向下转型
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/demo?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("1234");
        //现在只是完成准备工作，接下来才是和mysql服务器进行通信操作

        //2. 建立和数据库服务器之间的连接，连接会哦阿狸之后，才能进行后续 请求-响应 交互。
        Connection connection = dataSource.getConnection();

        //3. 构造 sql 语句（代码中的sql不需要写 ；）
        //String sql = "insert into student values(1, '张三')";
        String sql = "insert into student values(?, ?)";
        //? 是占位符 从1 开始
        PreparedStatement statement = connection.prepareStatement(sql);//预处理操作
        statement.setInt(1, id);
        statement.setString(2, name);

        System.out.println("sql: " + statement);
        //prepare 准备/ 预处理的
        //Statement 语句

        //把 sql 发送给服务器, 返回值是一个整数，表示影响到的行数
        //executeQuery 一般用于查询 （读）
        //executeUpdate 一般用于 插入 修改 删除 （写）
        int n = statement.executeUpdate();
        System.out.println(n);

        //5. 释放资源 释放顺序，后获取到的先释放
        statement.close();
        connection.close();
    }
}
